/**
 * Copyright (C) 2018-2021
 * All rights reserved, Designed By www.yixiang.co
 * 注意：
 * 本软件为www.yixiang.co开发研制，未经购买不得使用
 * 购买后可获得全部源代码（禁止转卖、分享、上传到码云、github等开源平台）
 * 一经发现盗用、分享等行为，将追究法律责任，后果自负
 */
package co.yixiang.modules.user.service;

import co.yixiang.common.service.BaseService;
import co.yixiang.modules.distributor.domain.YxDistributor;
import co.yixiang.modules.user.domain.YxUser;
import co.yixiang.modules.user.domain.YxUserDistributorRelation;
import co.yixiang.modules.user.service.dto.YxUserDistributorRelationQueryCriteria;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
* @author hupeng
* @date 2020-05-12
*/
public interface YxUserDistributorRelationService extends BaseService<YxUserDistributorRelation>{


    /**
     * 获取用户信息
     * @param distributorId distributorId
     * @return YxUserDistributorRelation
     */
    List<YxUserDistributorRelation> getByDistributorId(String distributorId);


    /**
     * 获取用户信息
     * @param uid uid
     * @return YxUserDistributorRelation
     */
    YxUserDistributorRelation getByUid(Long uid);


    /**
     * 获取用户信息
     * @param username username
     * @return YxUserDistributorRelation
     */
    YxUserDistributorRelation getByUsername(String username);



    /**
    * 查询数据分页
    * @param criteria 条件
    * @param pageable 分页参数
    * @return Map<String,Object>
    */
    Map<String,Object> queryAll(YxUserDistributorRelationQueryCriteria criteria, Pageable pageable);

    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<YxUserDto>
    */
    List<YxUserDistributorRelation> queryAll(YxUserDistributorRelationQueryCriteria criteria);

    /**
     * 刷新绑定关系
     * @param distributor
     */
    void refreshDistributor(YxDistributor distributor);


    /**
     * 在用户登录或者注册的时候生成关联关系
     * @param user
     */
    void relationUserAndDistributor(YxUser user, YxDistributor distributor);

}
